package tree

// 树
//
// 分类：
// - 二叉树
// - 多路查找树
// - 堆
// - 其他（树状数组、线段树）
//
// 相关概念：
// 根节点
// 父节点
// 子节点
// 兄弟节点
// 叶子节点
//
// 遍历：
// 前序遍历
// 中序遍历
// 后序遍历
//
//
// 二叉树（Binary Tree）
// 满二叉树
// 完全二叉树
//
//
// 二叉查找树（二叉搜索树）（Binary Search Tree）
// 平衡情况下，时间复杂度O(log(n))
// 极端情况下，时间复杂度O(n)
//
// 规则：
// 二叉查找树要求：树中任意节点，
// 左子树每个节点的值都小于此节点，右子树每个节点值都大于此节点
//
// 特点：
// - 支持动态数据集合的快速插入、删除、查找操作
// - 中序遍历二叉查找树，可以输出有序数据，时间复杂度O(n)，因此又叫二叉排序树
// - 可以支持快速查找最大节点和最小节点、前驱节点和后继节点.
// - 如果二叉查找树要支持重复数据，可以用链表等同节点扩容，或者当做其右节点。
